home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turnbull China Bikeride
/
Turnbull China Bikeride - Disc 1.iso
/
ARGONET
/
PD
/
GAMES
/
WIMPGAME
/
MINES2.ZIP
/
!Mines
/
s
/
HintA
next >
Wrap
Text File
|
1995-02-03
|
15KB
|
710 lines
; Assemblercode der Routine test_if_possible
; typedef struct {char x,y,test,domain;} border_typ;
AREA |C$$code|, CODE, READONLY
EXPORT |test_if_possible|
r0 RN 0
r1 RN 1
r2 RN 2
r3 RN 3
r4 RN 4
r5 RN 5
r6 RN 6
r7 RN 7
r8 RN 8
r9 RN 9
r10 RN 10
r11 RN 11
r12 RN 12
r13 RN 13
r14 RN 14
r15 RN 15
sl RN 10 ; stack limit
fp RN 11 ; frame pointer
ip RN 12 ; temporary workspace
sp RN 13 ; stack pointer
lr RN 14 ; link register
pc RN 15 ; program counter
d RN 0
XMAX RN 1
YMAX RN 2
feld RN 3
ptr RN 3
x RN 4
y RN 5
test RN 6
_14 RN 7
_58 RN 8
buffer1 RN 9
buffer2 RN 10
mines RN 11
marks RN 12
MINE_1 EQU &00000001
MINE_2 EQU &00000100
MINE_3 EQU &00010000
MINE_4 EQU &01000000
MARK_1 EQU &00000002
MARK_2 EQU &00000200
MARK_3 EQU &00020000
MARK_4 EQU &02000000
CLOSED_1 EQU &00000004
CLOSED_2 EQU &00000400
CLOSED_3 EQU &00040000
CLOSED_4 EQU &04000000
; a b c d e
; f 1 2 3 g
; h 4 X 5 i
; j 6 7 8 k
; l m n o p
DCB "test_if_possible",0
ALIGN
; test_if_possible(border_typ *b,int XMAX,int YMAX,char *feld);
|test_if_possible|
STMFD sp!,{r4-r12,r14}
LDRB x,[r0]
LDRB y,[r0,#1]
LDR test,[r0,#4]
MUL d,x,YMAX
ADD d,d,y
ADD ptr,feld,d,LSL #2
CMP y,#0
MOVLE _14,#CLOSED_1 ; fields 1,2 and 3 are closed
ORRLE _14,_14,#CLOSED_2 ; and need not be processed
ORRLE _14,_14,#CLOSED_3
BLE middle
SUB ptr,ptr,#4
CMP x,#0
LDRGTB _14,[ptr,-YMAX,LSL #2] ; load field no 1
MOVLE _14,#CLOSED_1
LDRB d,[ptr] ; load field no 2
ORR _14,_14,d,LSL #8
SUB d,XMAX,x
CMP d,#1
LDRGTB d,[ptr,YMAX,LSL #2] ; load field no 3
MOVLE d,#CLOSED_1
ORR _14,_14,d,LSL #16
ADD ptr,ptr,#4
middle
CMP x,#0
LDRGTB d,[ptr,-YMAX,LSL #2] ; load field no 4
MOVLE d,#CLOSED_1
ORR _14,_14,d,LSL #24
LDRB buffer1,[ptr] ; load field X
SUB d,XMAX,x
CMP d,#1
LDRGTB _58,[ptr,YMAX,LSL #2] ; load field no 5
MOVLE _58,#CLOSED_1
SUB d,YMAX,y
CMP d,#1
ORRLE _58,_58,#CLOSED_2
ORRLE _58,_58,#CLOSED_3
ORRLE _58,_58,#CLOSED_4
BLE init_done
ADD ptr,ptr,#4
CMP x,#0
LDRGTB d,[ptr,-YMAX,LSL #2] ; load field no 6
MOVLE d,#CLOSED_1
ORR _58,_58,d,LSL #8
LDRB d,[ptr] ; load field no 7
ORR _58,_58,d,LSL #16
SUB d,XMAX,x
CMP d,#1
LDRGTB d,[ptr,YMAX,LSL #2] ; load field no 8
MOVLE d,#CLOSED_1
ORR _58,_58,d,LSL #24
SUB ptr,ptr,#4
init_done
MOV buffer2,#0
field_1
TST _14,#CLOSED_1 ; buffer1 = X 0 0 0
BNE field_2 ; buffer2 = 0 0 0 0
CMP y,#2
BLT f1_abc
SUB ptr,ptr,#8
CMP x,#2
LDRGEB d,[ptr,-YMAX, LSL #3] ; load a
ORRGE buffer1,buffer1,d,LSL #8
CMP x,#1
LDRGEB d,[ptr,-YMAX,LSL #2] ; load b
ORRGE buffer1,buffer1,d,LSL #16
LDRB d,[ptr] ; load c
ORR buffer1,buffer1,d,LSL #24
ADD ptr,ptr,#8
f1_abc
CMP x,#2
BLT f1_fh
SUB ptr,ptr,YMAX,LSL #3
CMP y,#1
LDRGEB buffer2,[ptr,-#4] ; load f
LDRB d,[ptr] ; load h
ORR buffer2,buffer2,d,LSL #8
ADD ptr,ptr,YMAX,LSL #3 ; buffer1 = X a b c
f1_fh ; buffer2 = f h 0 0
MOV mines,#0
TST buffer1,#MINE_1
ADDNE mines,mines,#1
TST buffer1,#MINE_2
ADDNE mines,mines,#1
TST buffer1,#MINE_3
ADDNE mines,mines,#1
TST buffer1,#MINE_4
ADDNE mines,mines,#1
TST buffer2,#MINE_1
ADDNE mines,mines,#1
TST buffer2,#MINE_2
ADDNE mines,mines,#1
TST _14,#MINE_2
ADDNE mines,mines,#1
TST _14,#MINE_4
ADDNE mines,mines,#1
MOV marks,#0
TST buffer1,#MARK_1
ADDNE marks,marks,#1
TST buffer1,#MARK_2
ADDNE marks,marks,#1
TST buffer1,#MARK_3
ADDNE marks,marks,#1
TST buffer1,#MARK_4
ADDNE marks,marks,#1
TST buffer2,#MARK_1
ADDNE marks,marks,#1
TST buffer2,#MARK_2
ADDNE marks,marks,#1
TST _14,#MARK_2
ADDNE marks,marks,#1
TST _14,#MARK_4
ADDNE marks,marks,#1
CMP marks,mines
BGT tip_false
MOV d,test
AND d,d,#&F
ADD d,d,marks
CMP d,mines
BLT tip_false
field_2 TST _14,#CLOSED_2 ; buffer1 = X a b c
BNE field_3 ; buffer2 = f h 0 0
BIC buffer1,buffer1,#&0000FF00 ; delete a
TST _14,#CLOSED_1
BEQ f2_bc_loaded
CMP y,#2
BLT f2_d
SUB ptr,ptr,#8
CMP x,#1
LDRGEB d,[ptr,-YMAX,LSL #2] ; load b
ORRGE buffer1,buffer1,d,LSL #16
LDRB d,[ptr] ; load c
ORR buffer1,buffer1,d,LSL #24
SUB d,XMAX,x
CMP d,#1
LDRGTB d,[ptr,YMAX,LSL #2] ; load d
ORRGT buffer1,buffer1,d,LSL #8
ADD ptr,ptr,#8
B f2_d
f2_bc_loaded
CMP y,#2
BLT f2_d
SUB ptr,ptr,#8
SUB d,XMAX,x
CMP d,#1
LDRGTB d,[ptr,YMAX,LSL #2] ; load d
ORRGT buffer1,buffer1,d,LSL #8
ADD ptr,ptr,#8
f2_d MOV mines,#0 ; buffer1 = X d b c
TST buffer1,#MINE_1 ; buffer2 = f h 0 0
ADDNE mines,mines,#1
TST buffer1,#MINE_2
ADDNE mines,mines,#1
TST buffer1,#MINE_3
ADDNE mines,mines,#1
TST buffer1,#MINE_4
ADDNE mines,mines,#1
TST _14,#MINE_1
ADDNE mines,mines,#1
TST _14,#MINE_3
ADDNE mines,mines,#1
TST _14,#MINE_4
ADDNE mines,mines,#1
TST _58,#MINE_1
ADDNE mines,mines,#1
MOV marks,#0
TST buffer1,#MARK_1
ADDNE marks,marks,#1
TST buffer1,#MARK_2
ADDNE marks,marks,#1
TST buffer1,#MARK_3
ADDNE marks,marks,#1
TST buffer1,#MARK_4
ADDNE marks,marks,#1
TST _14,#MARK_1
ADDNE marks,marks,#1
TST _14,#MARK_3
ADDNE marks,marks,#1
TST _14,#MARK_4
ADDNE marks,marks,#1
TST _58,#MARK_1
ADDNE marks,marks,#1
CMP marks,mines
BGT tip_false
MOV d,test,LSR #4
AND d,d,#&F
ADD d,d,marks
CMP d,mines
BLT tip_false
field_3 TST _14,#CLOSED_3 ; buffer1 = X d b c
BNE field_5 ; buffer2 = f h 0 0
TST _14,#CLOSED_2
BEQ f3_cd_loaded
BIC buffer1,buffer1,#&0000FF00 ; delete a
CMP y,#2
BLT f3_cd_loaded
SUB ptr,ptr,#8
LDRB d,[ptr] ; load c
ORR buffer1,buffer1,d,LSL #24
SUB d,XMAX,x
CMP d,#1
LDRGTB d,[ptr,YMAX,LSL #2] ; load d
ORRGT buffer1,buffer1,d,LSL #8
ADD ptr,ptr,#8
f3_cd_loaded
BIC buffer1,buffer1,#&00FF0000 ; delete b
SUB d,XMAX,x
CMP d,#2
BLE f3_egi
ADD ptr,ptr,YMAX,LSL #3
CMP y,#2
LDRGEB d,[ptr,-#8] ; load e
ORRGE buffer1,buffer1,d,LSL #16
CMP y,#1
LDRGEB d,[ptr,-#4] ; load g
ORRGE buffer2,buffer2,d,LSL #16
LDRB d,[ptr] ; load i
ORR buffer2,buffer2,d,LSL #24
SUB ptr,ptr,YMAX,LSL #3
f3_egi MOV mines,#0 ; buffer1 = X d e c
TST buffer1,#MINE_1 ; buffer2 = f h g i
ADDNE mines,mines,#1
TST buffer1,#MINE_2
ADDNE mines,mines,#1
TST buffer1,#MINE_3
ADDNE mines,mines,#1
TST buffer1,#MINE_4
ADDNE mines,mines,#1
TST buffer2,#MINE_3
ADDNE mines,mines,#1
TST buffer2,#MINE_4
ADDNE mines,mines,#1
TST _14,#MINE_2
ADDNE mines,mines,#1
TST _58,#MINE_1
ADDNE mines,mines,#1
MOV marks,#0
TST buffer1,#MARK_1
ADDNE marks,marks,#1
TST buffer1,#MARK_2
ADDNE marks,marks,#1
TST buffer1,#MARK_3
ADDNE marks,marks,#1
TST buffer1,#MARK_4
ADDNE marks,marks,#1
TST buffer2,#MARK_3
ADDNE marks,marks,#1
TST buffer2,#MARK_4
ADDNE marks,marks,#1
TST _14,#MARK_2
ADDNE marks,marks,#1
TST _58,#MARK_1
ADDNE marks,marks,#1
CMP marks,mines
BGT tip_false
MOV d,test,LSR #8
AND d,d,#&F
ADD d,d,marks
CMP d,mines
BLT tip_false
field_5 TST _58,#CLOSED_1 ; buffer1 = X d e c
BNE field_8 ; buffer2 = f h g i
BIC buffer1,buffer1,#&FF000000 ; delete c
TST _14,#CLOSED_3
BEQ f5_gi_loaded
SUB d,XMAX,x
CMP d,#2
BLE f5_gi_loaded
ADD ptr,ptr,YMAX,LSL #3
CMP y,#1
LDRGEB d,[ptr,-#4] ; load g
ORRGE buffer2,buffer2,d,LSL #16
LDRB d,[ptr] ; load i
ORR buffer2,buffer2,d,LSL #24
SUB d,YMAX,y
CMP d,#1
LDRGTB d,[ptr,#4] ; load k
ORRGT buffer1,buffer1,d,LSL #24
SUB ptr,ptr,YMAX,LSL #3
B f5_k
f5_gi_loaded
SUB d,XMAX,x
CMP d,#2
BLE f5_k
ADD ptr,ptr,YMAX,LSL #3
SUB d,YMAX,y
CMP d,#1
LDRGTB d,[ptr,#4] ; load k
ORRGT buffer1,buffer1,d,LSL #24
SUB ptr,ptr,YMAX,LSL #3
f5_k MOV mines,#0 ; buffer1 = X d e k
TST buffer1,#MINE_1 ; buffer2 = f h g i
ADDNE mines,mines,#1
TST buffer1,#MINE_4
ADDNE mines,mines,#1
TST buffer2,#MINE_3
ADDNE mines,mines,#1
TST buffer2,#MINE_4
ADDNE mines,mines,#1
TST _14,#MINE_2
ADDNE mines,mines,#1
TST _14,#MINE_3
ADDNE mines,mines,#1
TST _58,#MINE_3
ADDNE mines,mines,#1
TST _58,#MINE_4
ADDNE mines,mines,#1
MOV marks,#0
TST buffer1,#MARK_1
ADDNE marks,marks,#1
TST buffer1,#MARK_4
ADDNE marks,marks,#1
TST buffer2,#MARK_3
ADDNE marks,marks,#1
TST buffer2,#MARK_4
ADDNE marks,marks,#1
TST _14,#MARK_2
ADDNE marks,marks,#1
TST _14,#MARK_3
ADDNE marks,marks,#1
TST _58,#MARK_3
ADDNE marks,marks,#1
TST _58,#MARK_4
ADDNE marks,marks,#1
CMP marks,mines
BGT tip_false
MOV d,test,LSR #16
AND d,d,#&F
ADD d,d,marks
CMP d,mines
BLT tip_false
field_8 TST _58,#CLOSED_4 ; buffer1 = X d e k
BNE field_7 ; buffer2 = f h g i
TST _58,#CLOSED_1
BEQ f8_ik_loaded
BIC buffer1,buffer1,#&FF000000 ; delete c
SUB d,XMAX,x
CMP d,#2
BLE f8_ik_loaded
ADD ptr,ptr,YMAX,LSL #3
LDRB d,[ptr] ; load i
ORR buffer2,buffer2,d,LSL #24
SUB d,YMAX,y
CMP d,#1
LDRGTB d,[ptr,#4] ; load k
ORRGT buffer1,buffer1,d,LSL #24
SUB ptr,ptr,YMAX,LSL #3
f8_ik_loaded
BIC buffer2,buffer2,#&00FF0000
BIC buffer1,buffer1,#&0000FF00
BIC buffer1,buffer1,#&00FF0000
SUB d,YMAX,y
CMP d,#2
BLE f8_no_loaded
ADD ptr,ptr,#8
LDRB d,[ptr] ; load n
ORR buffer2,buffer2,d,LSL #16
SUB d,XMAX,x
CMP d,#1
LDRGTB d,[ptr,YMAX,LSL #2] ; load o
ORRGT buffer1,buffer1,d,LSL #16
SUB d,XMAX,x
CMP d,#2
LDRGTB d,[ptr,YMAX,LSL #3] ; load p
ORRGT buffer1,buffer1,d,LSL #8
SUB ptr,ptr,#8
f8_no_loaded
MOV mines,#0 ; buffer1 = X p o k
TST buffer1,#MINE_1 ; buffer2 = f h n i
ADDNE mines,mines,#1
TST buffer1,#MINE_2
ADDNE mines,mines,#1
TST buffer1,#MINE_3
ADDNE mines,mines,#1
TST buffer1,#MINE_4
ADDNE mines,mines,#1
TST buffer2,#MINE_3
ADDNE mines,mines,#1
TST buffer2,#MINE_4
ADDNE mines,mines,#1
TST _58,#MINE_1
ADDNE mines,mines,#1
TST _58,#MINE_3
ADDNE mines,mines,#1
MOV marks,#0
TST buffer1,#MARK_1
ADDNE marks,marks,#1
TST buffer1,#MARK_2
ADDNE marks,marks,#1
TST buffer1,#MARK_3
ADDNE marks,marks,#1
TST buffer1,#MARK_4
ADDNE marks,marks,#1
TST buffer2,#MARK_3
ADDNE marks,marks,#1
TST buffer2,#MARK_4
ADDNE marks,marks,#1
TST _58,#MARK_1
ADDNE marks,marks,#1
TST _58,#MARK_3
ADDNE marks,marks,#1
CMP marks,mines
BGT tip_false
MOV d,test,LSR #28
AND d,d,#&F
ADD d,d,marks
CMP d,mines
BLT tip_false
field_7 TST _58,#CLOSED_3 ; buffer1 = X p o k
BNE field_6 ; buffer2 = f h n i
BIC buffer2,buffer2,#&FF000000 ; delete i
TST _58,#CLOSED_4
BEQ f7_no_loaded
BIC buffer1,buffer1,#&00FF0000 ; delete k
BIC buffer2,buffer2,#&00FF0000 ; delete p
SUB d,YMAX,y
CMP d,#2
BLE f7_no_loaded
ADD ptr,ptr,#8
CMP x,#1
LDRGEB d,[ptr,-YMAX,LSL #2] ; load m
ORRGE buffer2,buffer2,d,LSL #24
LDRB d,[ptr] ; load n
ORR buffer2,buffer2,d,LSL #16
SUB d,XMAX,x
CMP d,#1
LDRGTB d,[ptr,YMAX,LSL #2] ; load o
ORRGT buffer1,buffer1,d,LSL #16
SUB ptr,ptr,#8
B f7_m
f7_no_loaded
SUB d,YMAX,y
CMP d,#2
BLE f7_m
ADD ptr,ptr,#8
SUB d,XMAX,x
CMP d,#1
LDRGTB d,[ptr,-YMAX,LSL #2] ; load m
ORRGT buffer2,buffer2,d,LSL #24
SUB ptr,ptr,#8
f7_m MOV mines,#0 ; buffer1 = X p o k
TST buffer1,#MINE_1 ; buffer2 = f h n m
ADDNE mines,mines,#1
TST buffer1,#MINE_3
ADDNE mines,mines,#1
TST buffer2,#MINE_3
ADDNE mines,mines,#1
TST buffer2,#MINE_4
ADDNE mines,mines,#1
TST _14,#MINE_4
ADDNE mines,mines,#1
TST _58,#MINE_1
ADDNE mines,mines,#1
TST _58,#MINE_2
ADDNE mines,mines,#1
TST _58,#MINE_4
ADDNE mines,mines,#1
MOV marks,#0
TST buffer1,#MARK_1
ADDNE marks,marks,#1
TST buffer1,#MARK_3
ADDNE marks,marks,#1
TST buffer2,#MARK_3
ADDNE marks,marks,#1
TST buffer2,#MARK_4
ADDNE marks,marks,#1
TST _14,#MARK_4
ADDNE marks,marks,#1
TST _58,#MARK_1
ADDNE marks,marks,#1
TST _58,#MARK_2
ADDNE marks,marks,#1
TST _58,#MARK_4
ADDNE marks,marks,#1
CMP marks,mines
BGT tip_false
MOV d,test,LSR #24
AND d,d,#&F
ADD d,d,marks
CMP d,mines
BLT tip_false
field_6 TST _58,#CLOSED_2 ; buffer1 = X p o k
BNE field_4 ; buffer2 = f h n m
TST _58,#CLOSED_3
BEQ f6_mn_loaded
BIC buffer2,buffer2,#&00FF0000 ; delete m
BIC buffer2,buffer2,#&FF000000 ; delete n
SUB d,YMAX,y
CMP d,#2
BLE f6_mn_loaded
ADD ptr,ptr,#8
CMP x,#1
LDRGEB d,[ptr,-YMAX,LSL #2] ; load m
ORRGE buffer2,buffer2,d,LSL #24
LDRB d,[ptr] ; load n
ORR buffer2,buffer2,d,LSL #16
SUB ptr,ptr,#8
f6_mn_loaded
BIC buffer1,buffer1,#&0000FF00 ; delete d
BIC buffer1,buffer1,#&00FF0000 ; delete e
BIC buffer1,buffer1,#&FF000000 ; delete g
CMP x,#2
BLT f6_hjl
SUB ptr,ptr,YMAX,LSL #3
LDRB d,[ptr] ; load h
ORR buffer1,buffer1,d,LSL #8
SUB d,YMAX,y
CMP d,#1
LDRGTB d,[ptr,#4] ; load j
ORRGT buffer1,buffer1,d,LSL #16
SUB d,YMAX,y
CMP d,#2
LDRGTB d,[ptr,#8] ; load l
ORRGT buffer1,buffer1,d,LSL #24
ADD ptr,ptr,YMAX,LSL #3
f6_hjl MOV mines,#0 ; buffer1 = X h j l
TST buffer1,#MINE_1 ; buffer2 = f h n m
ADDNE mines,mines,#1
TST buffer1,#MINE_2
ADDNE mines,mines,#1
TST buffer1,#MINE_3
ADDNE mines,mines,#1
TST buffer1,#MINE_4
ADDNE mines,mines,#1
TST buffer2,#MINE_3
ADDNE mines,mines,#1
TST buffer2,#MINE_4
ADDNE mines,mines,#1
TST _14,#MINE_4
ADDNE mines,mines,#1
TST _58,#MINE_3
ADDNE mines,mines,#1
MOV marks,#0
TST buffer1,#MARK_1
ADDNE marks,marks,#1
TST buffer1,#MARK_2
ADDNE marks,marks,#1
TST buffer1,#MARK_3
ADDNE marks,marks,#1
TST buffer1,#MARK_4
ADDNE marks,marks,#1
TST buffer2,#MARK_3
ADDNE marks,marks,#1
TST buffer2,#MARK_4
ADDNE marks,marks,#1
TST _14,#MARK_4
ADDNE marks,marks,#1
TST _58,#MARK_3
ADDNE marks,marks,#1
CMP marks,mines
BGT tip_false
MOV d,test,LSR #20
AND d,d,#&F
ADD d,d,marks
CMP d,mines
BLT tip_false
field_4 TST _14,#CLOSED_4 ; buffer1 = X h j l
BNE tip_true ; buffer2 = f h n m
TST _58,#CLOSED_2
BEQ f4_hj_loaded
BIC buffer1,buffer1,#&00FF0000
BIC buffer1,buffer1,#&0000FF00
BIC buffer2,buffer2,#&00FF0000
CMP x,#2
BLT f4_hj_loaded
SUB ptr,ptr,YMAX,LSL #3
CMP y,#1
LDRGEB d,[ptr,-#4] ; load f
ORRGE buffer2,buffer2,d,LSL #16
LDRB d,[ptr] ; load h
ORR buffer1,buffer1,d,LSL #8
SUB d,YMAX,y
CMP d,#1
LDRGTB d,[ptr,#4] ; load j
ORRGT buffer1,buffer1,d,LSL #16
ADD ptr,ptr,YMAX,LSL #3
B f4_f
f4_hj_loaded
BIC buffer2,buffer2,#&00FF0000 ; delete
CMP x,#2
BLT f4_f
SUB ptr,ptr,YMAX,LSL #3
CMP y,#1
LDRGEB d,[ptr,-#4] ; load f
ORRGE buffer2,buffer2,d,LSL #16
ADD ptr,ptr,YMAX,LSL #3
f4_f MOV mines,#0 ; buffer1 = X h j l
TST buffer1,#MINE_1 ; buffer2 = f h f m
ADDNE mines,mines,#1
TST buffer1,#MINE_2
ADDNE mines,mines,#1
TST buffer1,#MINE_3
ADDNE mines,mines,#1
TST buffer2,#MINE_3
ADDNE mines,mines,#1
TST _14,#MINE_1
ADDNE mines,mines,#1
TST _14,#MINE_2
ADDNE mines,mines,#1
TST _58,#MINE_2
ADDNE mines,mines,#1
TST _58,#MINE_3
ADDNE mines,mines,#1
MOV marks,#0
TST buffer1,#MARK_1
ADDNE marks,marks,#1
TST buffer1,#MARK_2
ADDNE marks,marks,#1
TST buffer1,#MARK_3
ADDNE marks,marks,#1
TST buffer2,#MARK_3
ADDNE marks,marks,#1
TST _14,#MARK_1
ADDNE marks,marks,#1
TST _14,#MARK_2
ADDNE marks,marks,#1
TST _58,#MARK_2
ADDNE marks,marks,#1
TST _58,#MARK_3
ADDNE marks,marks,#1
CMP marks,mines
BGT tip_false
MOV d,test,LSR #12
AND d,d,#&F
ADD d,d,marks
CMP d,mines
BLT tip_false
tip_true MOV r0,#1
LDMFD sp!,{r4-r12,pc}
tip_false MOV r0,#0
LDMFD sp!,{r4-r12,pc}
END